// 模式的精确匹配此处

// 匹配次数的标识，使用{}来表示，{n}表示恰好重复n次，
// {n,}表示至少重复n次，{n,m}表示重复不少于n次，不多于m次
// 第一个模式指定o连续出现2次，第二个模式指定o连续出现2次到5次之间
/lo{2}k/.test("look"); // true
/lo{2,5}k/.test("looook"); // true

// 除了使用数字，还有一些约定俗成的匹配方式
// ? 问号表示某个模式出现0次或1次，等同于{0, 1}
// + 加号表示某个模式出现1次或多次，等同于{1,}
// * 星号表示某个模式出现0次或多次，等同于{0,} 类似于通配符的感觉，谁来都行，不来也没问题

// t 出现0次或1次
/t?est/.test("test"); // true
/t?est/.test("est"); // true

// t 出现1次或多次
/t+est/.test("test"); // true
/t+est/.test("ttest"); // true
/t+est/.test("est"); // false

// t 出现0次或多次
/t*est/.test("test"); // true
/t*est/.test("ttest"); // true
/t*est/.test("tttest"); // true
/t*est/.test("est"); // true

// 匹配还有一个贪婪模式和非贪婪模式，默认的是使用贪婪模式
// 就是在匹配的时候进行最大可能得匹配，就是匹配到下一个字符不满足匹配规则为止
// 下面代码中，模式是/a+/，表示匹配1个a或多个a，那么到底会匹配几个a呢？因为默认是贪婪模式，会一直匹配到字符a不出现为止，所以匹配结果是3个a
var s = "aaa";
s.match(/a+/); // ["aaa"]

// 非贪婪模式，就是最小匹配，只要一发现匹配，就返回结果，不要往下检查。如果想将贪婪模式改为非贪婪模式，可以在量词符后面加一个问号
// 下面例子中，模式结尾添加了一个问号/a+?/，这时就改为非贪婪模式，一旦条件满足，就不再往下匹配，+?表示只要发现一个a，就不再往下匹配了
var s2 = "aaa";
s2.match(/a+?/); // ["a"]
